共计 2580 个字符,预计需要花费 7 分钟才能阅读完成。
Swift 语言创始人 Chris Lattner 在 2021 年离开 Swift 核心团队。他在 2022 年 1 月时与 Tim Davis 共同创立 Modular AI,目标是开发人工智能系统开发平台,希望能从根本改进人工智能的程序开发性、可用性、可扩展性以及运算方式。前几天它们正式发布了新编程语言 Mojo,号称在在执行特定的演算法,Mojo 甚至能够比 Python 快 35,000 倍。
官方网站:https://www.modular.com/mojo
Mojo 官方手册:https://docs.modular.com/mojo
Mojo
Mojo 官网提到,该语言同时拥有 Python 的可用性,以及 C 语言的高效能。由于 Mojo 专门为在 AI 硬件上编程而设计的,例如运行 CUDA 和其他加速器的 GPU,因此运算效能大幅超越 Python,在执行特定的演算法,Mojo 甚至能够比 Python 快 35,000 倍。
Mojo 的设计目标是提供高效、易用、安全的 AI 开发环境。它支持 Python API,可以轻松地与现有的 Python 代码进行集成。此外,Mojo 还支持多线程和分布式计算,使得在大规模数据处理时可以更好地发挥其优势。Mojo 是 Modular AI 的一个正式的专案,所有 Modular 核心也都以 Mojo 编写,官方表示,这也是 Modular 模组化推理引擎高效能和高可移植性的原因。
Mojo 优劣
在 MLIR 上,Mojo 代码可以访问各种 AI 调优的硬件功能,例如 TensorCores 和 AMX 扩展。因此,对于某些特定算法类型,它的速度要远远超过原始 Python——它在 AWS r7iz.metal-16xl 上运行 Mandelbrot 算法只需 0.03 秒,而 Python 3.10.9 则需要 1027 秒(约 17 分钟)。
一、优势
- 高效的代码生成和执行速度:Mojo 的代码生成和执行速度非常高,这是它成为 AI 开发语言的重要原因之一。在大规模数据处理时,Mojo 可以比 Python 更快地完成计算,从而提高开发效率和性能。
- 兼容 Python API:Mojo 支持 Python API,这意味着可以使用现有的 Python 代码并集成到 Mojo 中。这对于那些已经有大量 Python 代码库的开发人员来说,是一个非常有吸引力的特点。同时,Mojo 还支持 Python 的科学计算库,如 NumPy、SciPy 和 Pandas 等,使得开发人员可以轻松地迁移现有的 Python 项目。
- 多线程和分布式计算支持:Mojo 支持多线程和分布式计算,这使得它可以在大规模数据处理时更好地发挥其优势。开发人员可以利用 Mojo 的多线程和分布式计算功能,使得计算更加并行化和高效。
- 安全性和易用性:Mojo 在安全性和易用性方面也表现出色。Mojo 的类型系统非常强大,能够防止许多常见的编程错误。同时,Mojo 的语法简单、易学,使得开发人员可以更快地掌握它。
二、劣势
- 还处于早期阶段,还没有完全兼容 Python 语法和运行时,也没有开源代码,因此缺乏社区的支持和反馈,也难以评估其真实的效果和潜力。
- 它可能会遇到编程语言设计上的大坑,比如如何平衡 Python 的动态性和 C 的静态性,如何把 Rust 的所有权、生存期和借用检查融入 Python 的语法,如何处理部署时对 Python 包的依赖等
- 它可能会面临激烈的竞争,因为 Python 生态已经有很多成熟的 AI 框架和编译器,比如 PyTorch、TensorFlow、Jax、Codon 等,它们也在不断地优化性能和扩展功能,mojo 语言要想脱颖而出并不容易。
- 它可能会引起一些 Python 用户的抵触或反感,因为它可能会让他们觉得自己的原生语言不够好或者需要被取代,也可能会让他们觉得 mojo 语言太复杂或者不符合他们的习惯。
三、其他
Modular AI 提到,Python 虽然是一个强大的语言,也支持各种人工智能研究,但可扩展性是 Python 最终无法在生产中使用的主要问题,Python 难以被用在大型工作负载,也无法在边缘装置中顺畅执行,生产环境的人工智能终究还是需要使用 C ++ 以及 CUDA 等其他语言。这样的状况导致人工智能软件环境碎片化,降低人工智能应用从研究阶段,进入生产阶段的速度,进而减少了人工智能开发人员的生产力。
Mojo 建立在现代编译技术之上,其具有类型设计,大幅增加程序的执行速度,也让开发者能够定义零成本抽象,并且拥有类似 Rust 语言的记忆体安全性。特别的是,Mojo 还拥有 自动调优(Autotuning)和 编译时元编程(Compile-Time Metaprogramming)功能。自动调优会在程序编译过程,自动优化程序性能,而编译时元编程则允许开发者在编译阶段生成代码,而不是在运行时生成代码。
受益于 Modular 的高效能 Runtime,且充分应用 MLIR(Multi-Level Intermediate Representation)技术,Mojo 能够直接操作各种 AI 硬件,像是存取执行线程、TensorCores 和 AMX 扩充等低阶硬件功能,官方提到,在执行像是 Mandelbrot 这类演算法,Mojo 比 Python 快 35,000 倍。
即便 Mojo 与 Python 有不少区别,但是官方称使用 Mojo 就像是 Python 一样。开发者可以在 Mojo 上使用 Python 的函式库,包括 Numpy、Pandas、Matplotlib,甚至是现有的其他 Python 代码。Mojo 非常灵活,开发者不需要重新编译框架或是编写任何 C ++ 或 CUDA 代码,就拥有执行核心融合(Kernel Fusion)、图重写(Graph Rewrites)以及形状函数(Shape Functions)等能力。
人工智能非营利研究组织 Fast.ai 创办人,同时也是 Modular AI 顾问的 Jeremy Howard 解释,当 Mojo 最终完成时,将相当于 Python 的严格超集,他认为,Mojo 可能是近十年最大的编程语言进步。目前的 Mojo 仍有一定缺失,比如包管理和构建系统——这也是 Python 社区长久以来一直努力解决的需求。另外,Mojo 语言尚未指定开源许可,但相信只是时间问题。
![post-qrcode](https://pic.gametop10.cn/wp-content/uploads/2023/04/1680444958-weixinG.jpg)